Apache HTTP Server から nginx への乗り換え
動的機能の対応
CGI や PHP などの動的機能の利用を考える
nginx をリバースプロキシとして利用し、バックエンドのサーバ(upstream ディレクティブ指定) に動的機能を任せる形
FastCGI や Apache(mod_php) を併用
SSI は対応しているがすべての SSI コマンドには対応していない
ngx_http_ssi_module
コンテンツのストレージ
コンテンツキャッシュ機能において、キャッシュのストレージはディスクのみ
Apache 2.4 で言う mod_cache_disk のみが可能
tmpfs
キャッシュをオンメモリで処理したい場合には、キャッシュの保存場所を tmpfs にする
CentOS 7
/dev/shm
allow, deny でホスト名の指定
nginx の allow ディレクティブや deny ディレクティブには、ホスト名での指定ができない
どうしてもホスト名での指定が必要な場合には、ngx_http_rdns_module などのサードパーティモジュールを検討してみる
コンテンツレベルでの設定上書き
nginx では .htaccess が無いので、サーバ管理者の作業(nginx の reload 等) が必要
ログフォーマットの互換性
log_format ディレクティブで任意に設定できるため、Apache と揃えることが可能
%D (応答時間) の単位に注意
nginx($request_time) の単位はミリ秒
Apache($D) はマイクロ秒
CPU・メモリなどのリソース、キャパシティ
静的コンテンツ配信のサーバを Apache から nginx に変更すると、nginx のイベントドリブン実装が影響し、CPU 利用率、メモリ使用量は少なくなる
SSL 中間証明書の設定方法
Apache は SSLCertificateChainFile ディレクティブで中間証明書の指定を行なうが、 nginx にはない
nginx では SSL 証明書の下部に中間証明書を追記する
Apache 設定ファイルの秘匿
nginx に移行した際に、.ht〜 ファイル(.htaccess や .htpasswd) が外部から意図せずアクセスできる状態にならないように設定を入れる
code:conf
location ~* \.ht.*$ {
deny all;
}
mod_rewrite の書き換え
mod_rewrite の移植が難しい
ログローテーション
Apache で rotatelogs プログラムを使っている場合は、ログローテーションのための外部設定は必要ないけど、nginx にはない
rpm でインストールすると logrotate の設定が /etc/logrotate.d/nginx に入る
#nginx
#Apache_HTTP_Server